    package com.wang.proxydemo.cglibProxy;

import net.sf.cglib.proxy.MethodInterceptor;
import net.sf.cglib.proxy.MethodProxy;

import java.lang.reflect.Method;

public class AnimalInterceptor implements MethodInterceptor {
    @Override
    public Object intercept(Object obj, Method method, Object[] args, MethodProxy proxy) throws Throwable {

        // 前置处理
        if (("eat").equals(method.getName())) {
            System.out.println("饲养员准备食物");
        } else if ("sleep".equals(method.getName())) {
            System.out.println("饲养员准备草席");
        }

        // 调用目标类的原始方法 (通过代理调用父类方法)
        Object result = proxy.invokeSuper(obj, args);

        // 后置处理
        if (("eat").equals(method.getName())) {
            System.out.println("饲养员收拾剩余食物");
        } else if ("sleep".equals(method.getName())) {
            System.out.println("饲养员叫醒小动物");
        }

        return result;
    }
}








